package spzx.mapper;

import com.atguigu.spzx.model.dto.product.ProductDto;
import com.atguigu.spzx.model.entity.base.ProductUnit;
import com.atguigu.spzx.model.entity.product.Product;
import com.atguigu.spzx.model.entity.product.ProductDetails;
import com.atguigu.spzx.model.entity.product.ProductSku;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ProductMapper {
    List<Product> selectByCondition(ProductDto productDto);

    List<ProductUnit> findAllProductUnit();

    void insertProduct();

    void insertProductSku(ProductSku productSku);

    void insertProductDetails(ProductDetails productDetails);

    void updateProduct(Product product);

    void updateProductSku(ProductSku productSku);

    void updateProductDetails(@Param("detailsImageUrls") String detailsImageUrls,@Param("productId") Long productId);

    Product getProductById(Long productId);

    List<ProductSku> getProductSkuByProductId(Long productId);


    ProductDetails getProductDetailsByProductId(Long productId);

    void deleteProduct(Long spuId);

    void deleteProductSku(Long spuId);

    void deleteProductDetails(Long spuId);

    void updateAuditStatus(@Param("spuId") Long spuId,@Param("auditStatus") Integer auditStatus,@Param("reason") String reason);

    void updateSpuStatus(@Param("spuId") Long spuId,@Param("status") Integer status);

    void updateSkuStatus(@Param("spuId") Long spuId,@Param("status") Integer status);
}
